package com.candy.dao;

import java.sql.*;
import java.util.*;

public class DBDriver {
    public static void main(String[] args) {

        try {
//        1、注册或实例化jdbc的驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2、获取数据库的连接对象Connection
//            jdbc:mysql使用jdbc链接mysql数据库
//            localhost 表示要链接的数据库的ip  localhost和127.0.0.1一样表示本机
//            database_name：数据库名
            String url="jdbc:mysql://localhost:3306/mall?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
            String username="root";
            String userpw="123456";
            Connection conn= DriverManager.getConnection(url,username,userpw);
            //3、获取数据库操作对象Statement（执行增删改查）
            Statement ment= conn.createStatement();
            //4、执行SQL语句，获取数据操作结果或者结果集对象ResultSet
            String sql="SELECT *from  tb_user";
            ResultSet re= ment.executeQuery(sql);
            //5、解析结果集对象ResultSet，进行相关的业务处理；
//            由于需要关闭相关资源，在获取结果集后可以进行数据转储操作
//            常见的 数据转储方式有；list+map  以及list+bean
//            下面讲解以list+map为例
//            准备一个容器
            List<Map<String,Object>> lp=new ArrayList<>();
//            获取 原 数据对象
            ResultSetMetaData rm= re.getMetaData();
//            获取数据表的列的个数
            int count=rm.getColumnCount();
//            准备map存储每一行的数据
            Map<String,Object> eachRow=null;
//            遍历行
            while (re.next()){
               eachRow=new LinkedHashMap<>();
//               遍历列
                for (int i=1;i<=count;i++){
                    eachRow.put(rm.getColumnLabel(i),re.getObject(rm.getColumnLabel(i)));
                }
//                将每一行放在list容器中
                lp.add(eachRow);
            }

/////////////////////////遍历list中储存的数据////////////////////////////////////
            for (Map<String,Object> mp:lp
                 ) {
                Set se=mp.keySet();
                for (Object ob:se
                     ) {
                    System.out.print("列名："+ob+"；值："+mp.get(ob));
                }
                System.out.println();
            }


            //6、关闭相关资源
            re.close();
            ment.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void test01() {
        try {
//        1、注册或实例化jdbc的驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2、获取数据库的连接对象Connection
//            jdbc:mysql使用jdbc链接mysql数据库
//            localhost 表示要链接的数据库的ip  localhost和127.0.0.1一样表示本机
//            database_name：数据库名
            String url="jdbc:mysql://localhost:3306/mall?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
            String username="root";
            String userpw="123456";
            Connection conn= DriverManager.getConnection(url,username,userpw);
            //3、获取数据库操作对象Statement（执行增删改查）
            Statement ment= conn.createStatement();
            //4、执行SQL语句，获取数据操作结果或者结果集对象ResultSet
            String sql="SELECT *from  tb_user";
            ResultSet re= ment.executeQuery(sql);
            //5、解析结果集对象ResultSet，进行相关的业务处理；
            while (re.next()){
                System.out.print(re.getObject(1)+"\t");
                System.out.print(re.getObject(2)+"\t");
                System.out.print(re.getObject(3)+"\t");
                System.out.println();
            }
            //6、关闭相关资源
            re.close();
            ment.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}
